﻿using System;
using SpdWeb.Util;
using System.Text.RegularExpressions;

/// <summary>
/// StringExtensions の概要の説明です
/// </summary>
public static class StringExtensions
{
    /// <summary>
    /// NULLチェック
    /// NULLの場合Trueを返却
    /// </summary>
    public static Boolean isNull(this string s) {
        if (string.IsNullOrEmpty(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 文字数チェック
    /// </summary>
    public static Boolean isLenOrver(this string s, int len) {
        if (StringUtil.isLenOver(s, len)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 日付妥当性チェック
    /// </summary>
    public static Boolean isDate(this string s) {
        if (DateUtil.isDate(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 数値チェック
    /// </summary>
    public static Boolean isAlpha(this string s) {
        Regex regex = new Regex("^[0-9]+$");
        if (regex.IsMatch(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 半角英数字チェック
    /// </summary>
    public static Boolean isAlphanumeric(this string s) {
        Regex regex = new Regex("^[a-zA-Z0-9]+$");
        if (regex.IsMatch(s)) {
            return true;
        } else {
            return false;
        }
    }


    /// <summary>
    /// 全角カナチェック
    /// </summary>
    public static Boolean isFullKana(this string s) {
        Regex regex = new Regex("^[ァ-ヴ!ー]+$");
        if (regex.IsMatch(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 半角カナチェック
    /// </summary>
    public static Boolean isHalfKana(this string s) {
        Regex regex = new Regex("^[ｱ-ﾞ]+$");
        if (regex.IsMatch(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// カナチェック
    /// </summary>
    public static Boolean isKana(this string s) {
        if (isFullKana(s) || isHalfKana(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 全角ひらがなチェック
    /// </summary>
    public static Boolean isHiragana(this string s) {
        Regex regex = new Regex("^[ぁ-ん!ー]+$");
        if (regex.IsMatch(s)) {
            return true;
        } else {
            return false;
        }
    }

    /// <summary>
    /// 数値変換
    /// </summary>
    public static int intValue(this string s) {
        if (s.isAlpha()) {
            return int.Parse(s);
        } else {
            return 0;
        }
    }

}
